perm filename SEE.MUS[T,LCS] blob sn#030729 filedate 1973-03-17 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00003 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001	   VALID 00003 PAGES 
 00002 00002	SEE
 00004 00003	VARIABLE SCALE_3D
 00006 ENDMK
⊗;
COMMENT SEE;

ARRAY F4,F5,F6,F7(512),DPYBUF(600);

FUNCTION SEE(ARRAY F);
  BEGIN VARIABLE X,OLDY,YCON;
    EXTERNAL FUNCTION TYPLOC(INTEGER A,INTEGER B),DPYSET(INTEGER POG,ARRAY DPYBUF,INTEGER SIZE),
      DPYBRT(INTEGER X),AIVECT(INTEGER X,INTEGER Y),RVECT(INTEGER X,INTEGER Y),
      DPYOUT(INTEGER POG),DPYCLR,RDNUM(X),
      DPYTXT(STRING S,INTEGER COUNT);
    TYPLOC(-300,-512);
    DPYSET(1,DPYBUF,520);
    DPYBRT(1);
    AIVECT(-256,-256);
    RVECT(0,512);
    AIVECT(256,0);
    RVECT(-512,0);
	AIVECT(-320,-11+258,); DPYTXT("+1.0",1);
	AIVECT(-320,-11+128,); DPYTXT("+0.5",1);
	AIVECT(-320,-11+0,); DPYTXT(" 0.0",1);
	AIVECT(-320,-11-128,); DPYTXT("-0.5",1);
	AIVECT(-320,-11-256,); DPYTXT("-1.0",1);
	AIVECT(-128-20,-21,); DPYTXT("128 ",1);
	AIVECT(0-20,-21,); DPYTXT("256 ",1);
	AIVECT(128-20,-21,); DPYTXT("384 ",1);
	AIVECT(256-20,-21,); DPYTXT("512 ",1);
    DPYBRT(3);
    AIVECT(-256,OLDY←INT(256*F(0)));
    FOR X←1 STEP 1 UNTIL 511 DO BEGIN;
      RVECT(1,256*F(X)-OLDY);
      OLDY←INT(256*F(X));
      END;
    DPYOUT(1);
    PRINT "
TYPE 0 TO CLEAR AND 1 JUST TO RETURN:";
    RDNUM(X);
    IF X=0 THEN DPYCLR;
    END;
VARIABLE SCALE_3D;
SCALE_3D←256/2;

    FUNCTION XVAL(I)=(F4(I)-F5(I)-F6(I)+F7(I))*SQRT(1/F1(I))/SQRT(2);
    FUNCTION YVAL(I)=(F4(I)+F5(I)-F6(I)-F7(I))*SQRT(1/F1(I))/SQRT(2);
FUNCTION RECONSTRUCT_SPACE4;
  BEGIN VARIABLE T,OLDX,OLDY,YCON;
    EXTERNAL FUNCTION TYPLOC(INTEGER A,INTEGER B),DPYSET(INTEGER POG,ARRAY DPYBUF,INTEGER SIZE),
      DPYBRT(INTEGER X),AIVECT(INTEGER X,INTEGER Y),
RVECT(INTEGER X,INTEGER Y),
AVECT(INTEGER X,INTEGER Y),
      DPYOUT(INTEGER POG),DPYCLR,RDNUM(X);
    TYPLOC(-300,-512);
    DPYSET(1,DPYBUF,520);
    DPYBRT(1);
    AIVECT(0,-256);
    RVECT(0,512);
    AIVECT(256,0);
    RVECT(-512,0);
    DPYBRT(3);
    AIVECT(OLDX←INT(XVAL(0)*SCALE_3D),OLDY←INT(YVAL(0)*SCALE_3D));
    FOR T←1 STEP 1 UNTIL 511 DO BEGIN;
<     RVECT(XVAL(T)*SCALE_3D-OLDX,YVAL(T)*SCALE_3D-OLDY);
      AVECT(XVAL(T)*SCALE_3D,YVAL(T)*SCALE_3D);
<     OLDX←INT(XVAL(T)*SCALE_3D);
<     OLDY←INT(YVAL(T)*SCALE_3D);
      END;
    DPYOUT(1);
    PRINT "
TYPE 0 TO CLEAR AND 1 JUST TO RETURN:";
    RDNUM(T);
    IF T=0 THEN DPYCLR;
    END;